@tool
class_name AdditionalEffect_ControlHitBoxAreaDetector
extends AdditionalEffect

## 控制HitBoxAreaDetector

#region 属性
@export var detector_id:int
## 是否控制active
@export var is_control_active:bool = true
@export var active:bool
## 是否控制对应的Area的active
@export var is_control_area_active:bool
@export var area_active:bool
## 是否清空记录检测对象的数据
@export var is_clear_detect_target_dict:bool
#endregion
#region 字段
#endregion
#region 信号
#endregion

#region 基类方法
## 初始化
func init(args:Dictionary = {}):
	if super(args):
		return true
	return false
## 检查能否执行添加效果，默认为true
func can_excute() -> bool:
	return true
## 执行添加效果
func excute() -> bool:
	if super():
		var combat_component:CombatComponent = target.get_component(CombatComponent)
		if combat_component:
			var hit_box:HitBox = combat_component.get_hit_box()
			if hit_box:
				var hitBoxAreaDetector:HitBoxAreaDetector = hit_box.get_detector(detector_id)
				if hitBoxAreaDetector:
					if is_control_active:
						hitBoxAreaDetector.active = active
					if is_control_area_active:
						hitBoxAreaDetector.set_area2d_active(area_active)
					if is_clear_detect_target_dict:
						hitBoxAreaDetector.clear_detect_target_dict()
		return true
	else:
		return false
## 取消执行的效果
func cancel_excute() -> bool:
	if super():
		return true
	else:
		return false
#endregion
#region 公共方法
#endregion
#region 私有方法
#endregion
#region 生命周期函数
func _init() -> void:
	if Engine.is_editor_hint():
		resource_local_to_scene = true
#endregion
